什么是 ACME 协议,它是如何工作的?

本文解释了ACME协议的工作原理,它对现代公钥基础设施 (PKI) 和证书管理部署的重要性,以及它如何帮助组织实现自动化。

什么是 ACME?

ACME,即自动自动证书管理环境(Automatic Certificate Management Environment),是一种协议,用于自动颁发和更新证书,无需人工干预。

互联网安全研究小组 (ISRG) 最初为自己的证书服务设计了ACME协议。证书颁发机构Let’s Encrypt通过ACME协议免费提供DV证书。如今,各种其他的CA、PKI供应商和浏览器都支持ACME协议,支持不同类型的证书。

ACME的版本

ACME协议的第一代ACMEv1于2016年发布,最初仅支持为一个域名颁发证书。2018年更新后的ACMEv2支持颁发通配符证书。同时也在安全方面进行了改进,以更好地验证域名所有权并防止恶意行为者通过ACME协议获得证书。

2019年,IETF在RFC8555中标准化了ACME协议。此后许多客户端都开始对该协议的支持。ACMEv2不能够向下兼容,所以ACMEv1将在2021年6月完全弃用。

ACME协议是如何工作的呢?

通过ACME协议,公司或个人站长可以简化或自动化证书管理的流程,如证书签名请求 (CSR)的生成、域名所有权的验证以及证书的颁发和安装。

ACME协议主要用于获取DV证书,因为DV证书不需要更高级验证。仅验证域名是否存在,无需人工干预。

该协议还可用于获取更高级的证书,如OV和EV证书。但是需要额外的支持机制以及ACME客户端。

ACME协议的目标是自动设置HTTPS服务器并提供受信任的证书以消除任何容易出错的手动事务。要使用该协议,您需要一个ACME客户端和ACME服务端,它们通过HTTPS连接与JSON消息进行通信的。

  • 客户端可在任何需要SSL/TLS证书的服务器或设备上运行。它用于请求证书管理操作,例如颁发或撤销。
  • 服务端由证书颁发机构 (CA) 运行,如Let’s Encrypt,响应客户端的请求。

市面上有多种不同的ACME客户端。Let’s Encrypt建议使用certbot客户端,它易于使用,适用于许多操作系统,并且有完整文档支持。其它流行的 ACME客户端可在GitHub上找到,如ACMESharp、acme-client、GetSSL等。

设置ACME客户端

选择一款ACME客户端后,下一步是要将其安装在需要部署证书的服务器上。ACME客户端几乎可以在任何编程语言和环境中运行,设置过程只需5个简单的步骤:

  1. 客户端提示输入要管理的域名。
  2. 客户端提供支持ACME协议的CA列表。
  3. 客户端联系选定的CA并生成授权密钥对。
  4. CA向客户端发出DNS或HTTPS质询,以证明其对域名的所有权。
  5. CA发送一个随机数,供客户端使用其私钥签名以证明密钥对的所有权。

ACME客户端初始配置过程

一旦CA验证客户端是真实的,ACME客户端就准备好代表域名进行证书管理请求。

使用ACME部署和管理证书

使用ACME协议颁发或更新证书很简单,客户端只需发送证书管理请求并使用授权密钥对对其进行签名。

  • 颁发/续订:安装了ACME客户端的服务器生成CSR并将其发送给CA,然后CA颁发证书。

  • 签发/更新(过程类似):

    • ACME客户端向CA发送CSR,请求使用指定的公钥为授权域颁发证书。
    • CSR使用相应的私钥和域名授权密钥。
    • 当CA收到请求时,它会验证两个签名,使用来自CSR的公钥为域名颁发证书,并将其返回给客户端。

证书颁发/更新

  • 撤销:为了撤销证书,ACME客户端使用域名授权密钥对证书进行撤销请求,CA验证请求后通过CRL或OCSP发布吊销信息,以防止接受吊销的证书。

ACME协议证书撤销

ACME是如何被使用的?

在2021年的机器身份管理状况报告(State of Machine Identity Management Report)中,40%的受访者透露,他们仍在使用电子表格手动跟踪证书。平均而言,两年内经历了大约3次因证书过期或配置错误而导致的意外中断。

尽管越来越多地使用现代、敏捷的计算机环境,但许多企业继续使用过时的技术来部署和管理证书,这些技术已不足以满足当今快节奏环境日益增长的需求。在电子表格或数据库中手动管理证书会导致效率低下或因人为错误而导致业务中断或不合规的风险。

这正是ACME协议强调的:“现有的Web PKI证书颁发机构倾向于使用一组临时协议来进行证书颁发和身份验证。这些临时程序是通过让用户遵循来自CA 的交互式指令而不是通过机器。”

使用ACME自动化管理证书

TLS服务器证书用于保护应用程序和数据,这种扩展的使用增加了中断的可能性,因为有更多的证书需要跟踪,每个业务应用程序有更多的证书可能会影响运营。使用手动方法或电子表格方式对证书的请求、续订和供应需要数小时或数天。除了耗时,还容易出错,甚至会导致服务中断。

ACME使IT管理员能够以自动化的方式向CA证明他们对域名的控制权、颁发受信任的证书并跟踪证书到期时间。此外,还可以在需要的时侯自动更新或撤销证书。

ACME将自动化带入复杂的PKI部署中。如ACME协议文档所述,ACME提供了一个“用于自动化颁发和域验证程序的可扩展框架,从而允许服务器和基础设施软件无需用户交互即可获取证书。使用该协议应该会从根本上简化 HTTPS的部署以及基于PKIX的其它基于TLS协议的身份验证的实用性。”

CA敏捷(agility)的重要性

CA敏捷性是添加/删除或从一个CA切换到另一个CA的能力。避免对单个CA产生大量依赖是行业的最佳实践。我们应该能够在零业务影响的情况下,在需要时透明地切换CA。

如果一个组织被锁定在一个CA中并且他们发生了一些事情,如服务中断。那么,能够切换到备用CA是便是最佳实践。

ACME使选择备用CA的过程变得简单明。目前有很多CA支持ACME协议,在配置阶段只需点击几下鼠标即可选择一个。

陈昊 编译

评论